// src/utils/axios.js
import axios from 'axios'
import { Toast } from 'zarm'
import { showMessage } from './status'

// 判断当前代码运行在开发环境还是生产环境。
const MODE = import.meta.env.MODE // 环境变量

// 置请求的基础路径
axios.defaults.baseURL = 'http://api.chennick.wang'
//  请求头的设置,Authorization 是我们在服务端鉴权的时候用到的，我们在前端设置好 token，服务端通过获取请求头中的 token 去验证每一次请求是否合法。
axios.defaults.withCredentials = true
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
axios.defaults.headers['Authorization'] = `${localStorage.getItem('token') || null}`
axios.defaults.headers.post['Content-Type'] = 'application/json'

/*interceptors 为拦截器，拦截器的作用是帮你拦截每一次请求，你可以在回调函数中做一些“手脚”，
再将数据 return 回去。下述代码就是拦截了响应内容，统一判断请求内容，如果非 200，则提示错误信息，
401 的话，就是没有登录的用户，默认跳到 /login 页面。如果是正常的响应，则 retrun res.data。*/
axios.interceptors.response.use(res => {
  (response) => {
    return response;
  },
    (error) => {
      const { response } = error;
      if (response) {
        // 请求已发出，但是不在2xx的范围
        showMessage(response.status); // 传入响应码，匹配响应码对应信息
        return Promise.reject(response.data);
      } else {
        ElMessage.warning("网络连接异常,请稍后再试!");
      }
    }

})

export default axios
